ìììŽ ì€íí¹ ë§ì€í°ë¡ í ìŒìë CSS ì€í¬ì ëìŽìžì. ë°ìí, ìí, 귞룹 ìììŽë¥Œ ê²°í©íŽ ë³µì¡íê³ ëì ìž UI륌 ììœê² 구ì¶íë ë²ì ë°°ì볎ìžì.
í ìŒìëì íì ë°ííë€: ë³µì¡í ì ížëŠ¬í° ì¡°í©ì ìí ìììŽ ì€íí¹ì êž°ì
í
ìŒìë CSSë ë§ì ê°ë°ìë€ìŽ ì¹ ì€íìŒë§ì ì ê·Œíë ë°©ìì 귌볞ì ìŒë¡ ë°êŸžììµëë€. ì ížëŠ¬í° ì°ì (utility-first) ì² íì HTMLì ë²ìŽëì§ ìê³ ë ì ìí íë¡í íìŽí곌 ë§ì¶€í ëììž êµ¬ì¶ì ê°ë¥íê² í©ëë€. p-4
ë text-blue-500
곌 ê°ì ëšìŒ ì ížëЬí°ë¥Œ ì ì©íë ê²ì ê°ëšíì§ë§, í
ìŒìëì ì§ì í íì ë³µì¡íê³ , ìí륌 ê°ì§ë©°(stateful), ë°ìíìž ì¬ì©ì ìží°íìŽì€ë¥Œ ë§ë€êž° ììí ë ë°íë©ëë€. ê·ž ë¹ê²°ì ê°ë ¥í멎ìë ê°ëší ê°ë
ìž ìììŽ ì€íí¹(modifier stacking)ì ììµëë€.
ë§ì ê°ë°ìë€ì hover:bg-blue-500
ìŽë md:grid-cols-3
곌 ê°ì ëšìŒ ìììŽì ìµìí©ëë€. íì§ë§ í° í멎ìì, ížë²(hover) ìíìŒ ë, ê·žëŠ¬ê³ ë€í¬ 몚ëê° íì±íëìì ëë§ ì€íìŒì ì ì©íŽìŒ íë€ë©Ž ìŽë»ê² íŽìŒ í ê¹ì? ë°ë¡ ìŽ ì§ì ìì ìììŽ ì€íí¹ìŽ ë±ì¥í©ëë€. ìŽê²ì ì¬ë¬ ìììŽë¥Œ íšê» ì°ê²°íì¬ ì¬ë¬ 조걎ì ì¡°í©ì ë°ìíë ë§€ì° êµ¬ì²Žì ìž ì€íìŒë§ ê·ì¹ì ë§ëë êž°ì ì
ëë€.
ìŽ ì¢
í© ê°ìŽëë ì¬ë¬ë¶ì ìììŽ ì€íí¹ì ìžê³ë¡ ê¹ìŽ ìëŽí ê²ì
ëë€. êž°ìŽë¶í° ììíì¬ ìí, ì€ëšì (breakpoints), group
, peer
, ê·žëŠ¬ê³ ììì ë³í(arbitrary variants)ì í¬íšíë ê³ êž ì¡°í©ê¹ì§ ì ì§ì ìŒë¡ ëìê° ê²ì
ëë€. ìŽ êžì ë€ ìœì ë쯀ìŽë©Ž, ì¬ë¬ë¶ì ììí ì ìë ê±°ì 몚ë UI 컎í¬ëížë¥Œ í
ìŒìë CSSì ì ìžì ì°ìíšìŒë¡ 구ì¶í ì ìë ë¥ë ¥ì ê°ì¶ê² ë ê²ì
ëë€.
êž°ìŽ: ëšìŒ ìììŽ ìŽíŽíêž°
ì€íí¹ì íêž°ì ìì, ì°ëЬë êµ¬ì± ìì륌 ìŽíŽíŽìŒ í©ëë€. í ìŒìëìì ìììŽë ì ížëŠ¬í° íŽëì€ì ì¶ê°ëë ì ëì¬ë¡, íŽë¹ ì ížëЬí°ê° ìžì ì ì©ëìŽìŒ íëì§ë¥Œ ì§ìí©ëë€. ìŽê²ë€ì 볞ì§ì ìŒë¡ CSS ìì¬ íŽëì€(pseudo-classes), 믞ëìŽ ì¿ŒëŠ¬ ë° êž°í ì¡°ê±Žë¶ ê·ì¹ì ëí ì ížëŠ¬í° ì°ì ë°©ìì 구íì ëë€.
ìììŽë í¬ê² ë€ì곌 ê°ìŽ ë¶ë¥í ì ììµëë€:
- ìí ìììŽ(State Modifiers): ì¬ì©ì ìížìì©ê³Œ ê°ì ììì íì¬ ìíì ë°ëŒ ì€íìŒì ì ì©í©ëë€. ìŒë°ì ìž ìë¡ë
hover:
,focus:
,active:
,disabled:
,visited:
ê° ììµëë€. - ë°ìí ì€ëšì ìììŽ(Responsive Breakpoint Modifiers): 몚ë°ìŒ ì°ì ì ê·Œ ë°©ìì ë°ëŒ í¹ì í멎 í¬êž° ìŽììì ì€íìŒì ì ì©í©ëë€. Ʞ볞ê°ì
sm:
,md:
,lg:
,xl:
,2xl:
ì ëë€. - ìì€í
í겜ì€ì ìììŽ(System Preference Modifiers): ì¬ì©ìì ìŽì 첎ì ë ëžëŒì°ì ì€ì ì ë°ìí©ëë€. ê°ì¥ ëíì ìž ê²ì ë€í¬ 몚ë륌 ìí
dark:
ìŽì§ë§,motion-reduce:
ëprint:
ì ê°ì ë€ë¥ž ê²ë€ë ë§€ì° ì ì©í©ëë€. - ìì¬ íŽëì€ & ìì¬ ìì ìììŽ(Pseudo-class & Pseudo-element Modifiers): ììì í¹ì 구조ì í¹ì±ìŽë ë¶ë¶ì ëììŒë¡ í©ëë€. ì륌 ë€ìŽ
first:
,last:
,odd:
,even:
,before:
,after:
,placeholder:
ê° ììµëë€.
ì륌 ë€ìŽ, ê°ëší ë²íŒì ë€ì곌 ê°ìŽ ìí ìììŽë¥Œ ì¬ì©í ì ììµëë€:
<button class="bg-sky-500 hover:bg-sky-600 ...">Click me</button>
ì¬êž°ì hover:bg-sky-600
ì ì¬ì©ìì 컀ìê° ë²íŒ ìì ìì ëë§ ë ìŽëìŽ ë°°ê²œìì ì ì©í©ëë€. ìŽê²ìŽ ì°ëŠ¬ê° ììŒë¡ 구ì¶íŽ ëê° êž°ë³ž ê°ë
ì
ëë€.
ì€íí¹ì ë§ë²: ëì UI륌 ìí ìììŽ ê²°í©
ìììŽ ì€íí¹ì ìŽë¬í ì ëì¬ë¥Œ íšê» ì°ê²°íì¬ ë 구첎ì ìž ì¡°ê±Žì ë§ëë 곌ì ì ëë€. 묞ë²ì ê°ëšíê³ ì§êŽì ì ëë€: ìœë¡ ìŒë¡ 구ë¶íì¬ ì°šë¡ëë¡ ë°°ì¹íêž°ë§ í멎 ë©ëë€.
묞ë²: modifier1:modifier2:utility-class
ììê° ì€ìí©ëë€. í
ìŒìëë ìììŽë¥Œ ìŒìªœìì ì€ë¥žìªœìŒë¡ ì ì©í©ëë€. ì륌 ë€ìŽ, md:hover:text-red-500
íŽëì€ë ëëµ ë€ì곌 ê°ì CSSë¡ ë³íë©ëë€:
@media (min-width: 768px) {
.md\:hover\:text-red-500:hover {
color: red;
}
}
ìŽ ê·ì¹ì "ì€ê°(medium) ì€ëšì ìŽììì, ìŽ ììì ížë²ë ë, í ì€íž ììì 빚ê°ììŒë¡ ë§ë€ìŽëŒ"ëŒë ì믞ì ëë€. ëª ê°ì§ ì€ì©ì ìž ì€ì ìì 륌 ìŽíŽë³Žê² ìµëë€.
ìì 1: ì€ëšì 곌 ìí ê²°í©íêž°
ìŒë°ì ìž ì구ì¬í ì€ íëë í°ì¹ êž°ë° ì¥ì¹ì 컀ì êž°ë° ì¥ì¹ìì ìížìì© ììê° ë€ë¥Žê² ëìíëë¡ íë ê²ì ëë€. ì°ëЬë ë€ë¥ž ì€ëšì ìì ížë² íšê³Œë¥Œ ë³ê²œíšìŒë¡ìš ìŽë¥Œ ê·Œì¬íê² êµ¬íí ì ììµëë€.
ë°ì€í¬í±ììë ížë² ì 칎ëê° ë¯žë¬íê² ë ì€ë¥Žì§ë§, 몚ë°ìŒììë í°ì¹ ì ížë² ìíê° ê³ ì ëë ê²ì íŒíêž° ìíŽ ížë² íšê³Œê° ìë 칎ë 컎í¬ëížë¥Œ ìê°íŽ ë³Žìžì.
<div class="... transition-transform duration-300 md:hover:scale-105 md:hover:-translate-y-1">...</div>
ë¶ì:
transition-transform duration-300
: transform ë³ê²œì ëí ë¶ëë¬ìŽ ì í íšê³Œë¥Œ ì€ì í©ëë€.md:hover:scale-105
: ì€ê° ì€ëšì (768px) ìŽììì, 칎ëê° ížë²ëìì ë, í¬êž°ë¥Œ 5% í€ìëë€.md:hover:-translate-y-1
: ì€ê° ì€ëšì ìŽììì, 칎ëê° ížë²ëìì ë, 칎ë륌 ìœê° ìë¡ ìŽëìíµëë€.
768pxë³Žë€ ìì í멎ììë md:
ìììŽê° ížë² íšê³Œê° ì ì©ëë ê²ì ë§ì 몚ë°ìŒ ì¬ì©ììê² ë ëì 겜íì ì ê³µí©ëë€.
ìì 2: ë€í¬ 몚ëì ìížìì©ì± ë ìŽìŽë§íêž°
ë€í¬ 몚ëë ë ìŽì ìŒë¶ ì¬ì©ìë§ì ìí êž°ë¥ìŽ ìëëŒ, ì¬ì©ìì êž°ëì¹ì ëë€. ì€íí¹ì ì¬ì©í멎 ê° ìì 첎ê³ì í¹íë ìížìì© ì€íìŒì ì ìí ì ììµëë€.
ëŒìŽíž 몚ëì ë€í¬ 몚ë 몚ëìì Ʞ볞 ìíì ížë² ìíì ìììŽ ë€ë¥ž ë§í¬ ì€íìŒì ë§ë€ìŽ ë³Žê² ìµëë€.
<a href="#" class="text-blue-600 underline hover:text-blue-800 dark:text-cyan-400 dark:hover:text-cyan-200">Read more</a>
ë¶ì:
text-blue-600 hover:text-blue-800
: ëŒìŽíž 몚ë(Ʞ볞ê°)ììë í ì€ížê° íëììŽê³ ížë² ì ë ìŽëìì§ëë€.dark:text-cyan-400
: ë€í¬ 몚ëê° íì±íë멎 Ʞ볞 í ì€íž ìììŽ ë°ì ì²ë¡ììŒë¡ ë³ê²œë©ëë€.dark:hover:text-cyan-200
: ë€í¬ 몚ëê° íì±íëê³ ëí ë§í¬ê° ížë²ë멎, í ì€ížë íšì¬ ë ë°ì ì²ë¡ììŽ ë©ëë€.
ìŽë í ì€ì íŽëì€ë¡ ììì ëí ìì í í ë§ ìžì ì€íìŒ ìžížë¥Œ ë§ëë ë°©ë²ì 볎ì¬ì€ëë€.
ìì 3: ìž ê°ì§ ììì ì¡°í© - ë°ìí, ë€í¬ 몚ë, ìí ìììŽ ì€íí¹
ìŽì ìž ê°ì§ ê°ë ì 몚ë ê²°í©íì¬ íëì ê°ë ¥í ê·ì¹ìŒë¡ ë§ë€ìŽ ë³Žê² ìµëë€. í¬ì»€ì€ëììì ìë €ìŒ íë ì ë ¥ íë륌 ììíŽ ë³Žìžì. ìê°ì íŒëë°±ì ë°ì€í¬í±ê³Œ 몚ë°ìŒìì ë¬ëŒìŒ íë©°, ë€í¬ 몚ëìë ì ìíŽìŒ í©ëë€.
<input type="text" class="border-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 md:dark:focus:ring-yellow-400" />
ì¬êž°ì ê°ì¥ ë³µì¡í íŽëì€ìž md:dark:focus:ring-yellow-400
ì ì§ì€íŽ ë³Žê² ìµëë€.
ë¶ì:
md:
: ìŽ ê·ì¹ì ì€ê° ì€ëšì (768px) ìŽìììë§ ì ì©ë©ëë€.dark:
: íŽë¹ ì€ëšì ëŽìì, ì¬ì©ìê° ë€í¬ 몚ë륌 íì±íí 겜ì°ìë§ ì ì©ë©ëë€.focus:
: íŽë¹ ì€ëšì ë° ìì 몚ë ëŽìì, ì ë ¥ ììê° í¬ì»€ì€ë¥Œ ë°ìì ëë§ ì ì©ë©ëë€.ring-yellow-400
: ìž ê°ì§ ì¡°ê±ŽìŽ ëªšë 충족ë멎 ë žëì í¬ì»€ì€ ë§ì ì ì©í©ëë€.
ìŽ ëšìŒ ì ížëŠ¬í° íŽëì€ë ì°ëЬìê² ë§€ì° êµ¬ì²Žì ìž ëìì ì ê³µí©ëë€: "í° í멎, ë€í¬ 몚ëìì, ìŽ í¬ì»€ì€ë ì
ë ¥ì ë
žëì ë§ìŒë¡ ê°ì¡° íìíëŒ." ííž, ë ê°ëší focus:ring-blue-500
ì ë€ë¥ž 몚ë ìë늬ì€(몚ë°ìŒ ëŒìŽíž/ë€í¬ 몚ë, ë°ì€í¬í± ëŒìŽíž 몚ë)ì ëí Ʞ볞 í¬ì»€ì€ ì€íìŒ ìí ì í©ëë€.
êž°ìŽë¥Œ ëìŽì: `group`곌 `peer`륌 ì¬ì©í ê³ êž ì€íí¹
ì€íí¹ì ìì ê°ì êŽê³ë¥Œ ìì±íë ìììŽë¥Œ ëì
í ë ëì± ê°ë ¥íŽì§ëë€. group
곌 peer
ìììŽë ê°ê° ë¶ëªš ëë íì ììì ìíì ë°ëŒ ìì륌 ì€íìŒë§í ì ìê² íŽì€ëë€.
`group-*`ìŒë¡ ì¡°ì ë íšê³Œ
group
ìììŽë ë¶ëªš ìììì ìížìì©ìŽ íë ìŽìì ìì ììì ìí¥ì 믞ì³ìŒ í ë ì벜í©ëë€. ë¶ëªšì group
íŽëì€ë¥Œ ì¶ê°í멎, 몚ë ìì ìììì group-hover:
, group-focus:
ë±ì ì¬ì©í ì ììµëë€.
칎ëì ìŽë ë¶ë¶ìë ížë²í멎 ì 목 ìììŽ ë°ëê³ íìŽí ììŽìœìŽ ìì§ìŽë 칎ë륌 ë§ë€ìŽ ëŽ ìë€. ìŽê²ì ë€í¬ 몚ëë ìžìíŽìŒ í©ëë€.
<a href="#" class="group block p-6 bg-white dark:bg-slate-800 rounded-lg shadow-md">
<h3 class="text-slate-900 group-hover:text-blue-600 dark:text-white dark:group-hover:text-blue-400">Card Title</h3>
<p class="text-slate-500 dark:text-slate-400">Card content goes here.</p>
<span class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">â</span>
</a>
ì€íë ìììŽ ë¶ì:
h3
ìdark:group-hover:text-blue-400
: ë€í¬ 몚ëê° íì±íëê³ ëí ë¶ëªšgroup
ìŽ ížë²ë ë, ì 목ì í ì€íž ììì ë³ê²œí©ëë€. ìŽê²ì Ʞ볞 ë€í¬ 몚ë ììì ë®ìŽì°ì§ë§ ëŒìŽíž 몚ë ížë² ì€íìŒìë ìí¥ì ì£Œì§ ììµëë€.span
ìgroup-hover:translate-x-1
: ë¶ëªšgroup
ìŽ ížë²ë ë (ìŽë€ 몚ëììë ), íìŽí ììŽìœì ì€ë¥žìªœìŒë¡ ìŽëìíµëë€.
`peer-*`륌 ì¬ì©í ëì íì ìížìì©
peer
ìììŽë íì ìì륌 ì€íìŒë§íêž° ìíŽ ì€ê³ëììµëë€. ììì peer
íŽëì€ë¥Œ íìí멎, íì íì ìììì peer-focus:
, peer-invalid:
, ëë peer-checked:
ì ê°ì ìììŽë¥Œ ì¬ì©íì¬ peerì ìíì ë°ëŒ ì€íìŒì ì§ì í ì ììµëë€.
ì íì ìž ì¬ì© ì¬ë¡ë íŒ ì ë ¥ê³Œ ê·ž ë ìŽëžì ëë€. ì°ëЬë ì ë ¥ìŽ í¬ì»€ì€ë ë ë ìŽëž ìììŽ ë³ê²œëꞰ륌 ìíë©°, ì ë ¥ìŽ ì íšíì§ ìì ê²œì° ì€ë¥ ë©ìì§ê° ëíëꞰ륌 ìí©ëë€. ìŽê²ì ì€ëšì 곌 ìì ì²Žê³ ì ë°ì ê±žì³ ìëíŽìŒ í©ëë€.
<div>
<label for="email" class="text-sm font-medium text-gray-700 dark:text-gray-300 peer-focus:text-violet-600 dark:peer-focus:text-violet-400">Email</label>
<input type="email" id="email" class="peer mt-1 block w-full border-gray-300 invalid:border-red-500 focus:border-violet-500 ..." required />
<p class="mt-2 invisible text-sm text-red-600 peer-invalid:visible">Please provide a valid email address.</p>
</div>
ì€íë ìììŽ ë¶ì:
label
ìdark:peer-focus:text-violet-400
: ë€í¬ 몚ëê° íì±íëê³ ëí íì peer
ì ë ¥ìŽ í¬ì»€ì€ë ë, ë ìŽëžì ììì 볎ëŒììŒë¡ ë³ê²œí©ëë€. ìŽê²ì ëŒìŽíž 몚ë륌 ìí íì€peer-focus:text-violet-600
곌 íšê» ìëí©ëë€.- ì€ë¥
p
ìpeer-invalid:visible
: íì peer
ì ë ¥ìŽinvalid
ìíìŒ ë (ì: ë¹ íì íë), ê°ìì±ìinvisible
ììvisible
ë¡ ë³ê²œí©ëë€. ìŽê²ì ìë°ì€í¬ëŠœíž ììŽ íŒ ì íšì± ê²ì¬ ì€íìŒë§ì íë ëíì ìž ìì ëë€.
ìµì¢ ëšê³: ììì ë³í(Arbitrary Variants)ìŒë¡ ì€íí¹íêž°
ëë¡ë í ìŒìëê° êž°ë³žì ìŒë¡ ì ê³µíì§ ìë 조걎ì ë°ëŒ ì€íìŒì ì ì©íŽìŒ í íìê° ììµëë€. ìŽë ììì ë³íìŽ ì¬ì©ë©ëë€. ìŽë¥Œ íµíŽ íŽëì€ ìŽëŠì ì§ì ì¬ì©ì ì ì ì íì륌 ìì±í ì ììŒë©°, ë¬Œë¡ ì€íí¹ë ê°ë¥í©ëë€!
묞ë²ì ëêŽížë¥Œ ì¬ì©í©ëë€: [&_selector]:utility
.
ìì 1: ížë² ì í¹ì ìì íê²í íêž°
컚í
ìŽëê° ìê³ , í° í멎ììë§ íŽë¹ 컚í
ìŽëì ížë²í ë ê·ž ìì 몚ë <strong>
íê·žê° ë
¹ììŒë¡ ë³íê² íê³ ì¶ë€ê³ ììíŽ ë³Žìžì.
This is a paragraph with important text that will change color. This is another paragraph with another bolded part.<div class="p-4 border lg:hover:[&_strong]:text-green-500">
ë¶ì:
lg:hover:[&_strong]:text-green-500
íŽëì€ë ë°ìí ìììŽ(lg:
), ìí ìììŽ(hover:
), ê·žëŠ¬ê³ ììì ë³í([&_strong]:
)ì ê²°í©íì¬ ë§€ì° êµ¬ì²Žì ìž ê·ì¹ì ë§ëëë€: "í° í멎 ìŽììì, ìŽ divì ížë²ë ë, 몚ë íì <strong>
ìì륌 ì°Ÿì í
ì€ížë¥Œ ë
¹ììŒë¡ ë§ë€ìŽëŒ."
ìì 2: ìì± ì íìì ì€íí¹íêž°
ìŽ êž°ì ì data-*
ìì±ì ì¬ì©íì¬ ìí륌 êŽëЬíë (ì: ììœëìž, í ëë ëë¡ë€ìŽ) ìë°ì€í¬ëŠœíž íë ììí¬ì íµí©í ë ë§€ì° ì ì©í©ëë€.
ììœëìž ììŽí
ì ìœí
ìž ììì Ʞ볞ì ìŒë¡ ìšê²šì ž ìì§ë§ ë¶ëªšê° data-state="open"
ì ê°ì§ ë 볎ìŽëë¡ ì€íìŒì ì§ì íŽ ëŽ
ìë€. ëí ë€í¬ 몚ëìì ìŽë žì ë ë€ë¥ž 배겜ìì ìí©ëë€.
<div data-state="closed" class="border rounded">
<h3>... Accordion Trigger ...</h3>
<div class="overflow-hidden h-0 [data-state=open]:h-auto dark:[data-state=open]:bg-gray-800">
Accordion Content...
</div>
</div>
ìë°ì€í¬ëŠœížë ë¶ëªšì data-state
ìì±ì open
곌 closed
ì¬ìŽìì í êží©ëë€.
ì€íë ìììŽ ë¶ì:
ìœí
ìž div
ì dark:[data-state=open]:bg-gray-800
íŽëì€ë ì벜í ìì
ëë€. ìŽê²ì "ë€í¬ 몚ëê° íì±íëê³ ëí ììì data-state="open"
ìì±ìŽ ìì ë, ìŽëìŽ íì 배겜ì ì ì©íëŒ"ë ì믞ì
ëë€. ìŽê²ì 몚ë 몚ëìì ê°ìì±ì ì ìŽíë Ʞ볞 [data-state=open]:h-auto
ê·ì¹ê³Œ íšê» ì€íë©ëë€.
ëªšë² ì¬ë¡ ë° ì±ë¥ ê³ ë €ì¬í
ìììŽ ì€íí¹ì ê°ë ¥íì§ë§, 깚ëíê³ êŽëЬíêž° ì¬ìŽ ìœëë² ìŽì€ë¥Œ ì ì§íêž° ìíŽ íëª íê² ì¬ì©íë ê²ìŽ ì€ìí©ëë€.
- ê°ë ì± ì ì§: ꞎ ì ížëŠ¬í° íŽëì€ ë¬žììŽì ìœêž° ìŽë €ìì§ ì ììµëë€. ê³µì í ìŒìë CSS Prettier íë¬ê·žìžê³Œ ê°ì ìë íŽëì€ ì ë ¬êž°ë¥Œ ì¬ì©íë ê²ìŽ ê°ë ¥í ê¶ì¥ë©ëë€. ìŽë íŽëì€ ìì륌 íì€ííì¬ ë³µì¡í ì¡°í©ì íšì¬ ìœê² íì í ì ìê² íŽì€ëë€.
- 컎í¬ëíž ì¶ìí: ë§ì ìììì ëìŒí ë³µì¡í ìììŽ ì€íì ë°ë³µíê³ ìë€ë©Ž, ê·ž íšíŽì ì¬ì¬ì© ê°ë¥í 컎í¬ëíž(ì: React ëë Vue 컎í¬ëíž, Laravelì Blade 컎í¬ëíž ëë ê°ëší partial)ë¡ ì¶ìííŽìŒ íë€ë ê°ë ¥í ì ížì ëë€.
- JIT ìì§ íì©: 곌거ìë ë§ì ë³íì íì±íí멎 CSS íìŒ í¬êž°ê° ì»€ì§ ì ìììµëë€. í ìŒìëì JIT(Just-In-Time) ìì§ ëë¶ì ìŽë ë ìŽì 묞ì ê° ëì§ ììµëë€. JIT ìì§ì íìŒì ì€ìºíì¬ ë³µì¡í ìììŽ ì€í ì¡°í©ì í¬íšíì¬ íìí CSSë§ ì ííê² ìì±í©ëë€. ìµì¢ ë¹ëì 믞ì¹ë ì±ë¥ ìí¥ì 믞믞íë¯ë¡ ìì ìê² ì€íí ì ììµëë€.
- í¹ì ì± ë° ìì ìŽíŽ: HTMLìì íŽëì€ì ììë ìŒë°ì ìŒë¡ ì íµì ìž CSSììì ê°ì ë°©ììŒë¡ í¹ì ì±ì ìí¥ì 믞ì¹ì§ ììµëë€. ê·žë¬ë ëìŒí ì€ëšì ë° ìíìì ë ì ížëЬí°ê° ëìŒí ìì±ì ì ìŽíë €ê³ í ë(ì:
md:text-left md:text-right
), 묞ììŽìì ë§ì§ë§ì ëíëë ê²ìŽ ìŽê¹ëë€. Prettier íë¬ê·žìžìŽ ìŽ ë¡ì§ì ì²ëŠ¬íŽ ì€ëë€.
ê²°ë¡ : ììí ì ìë 몚ë ê²ì 구ì¶íìžì
í ìŒìë CSS ìììŽ ì€íí¹ì ëšìí êž°ë¥ìŽ ìëëŒ, í ìŒìë륌 ëšìí ì ížëŠ¬í° ëŒìŽëžë¬ëЬìì í¬êŽì ìž UI ëììž íë ììí¬ë¡ 격ììí€ë íµì¬ ë©ì»€ëìŠì ëë€. ë°ìí, ìí, í ë§, 귞룹, íŒìŽ, ê·žëŠ¬ê³ ì¬ì§ìŽ ììì ë³íê¹ì§ ê²°í©íë êž°ì ì ë§ì€í°íšìŒë¡ìš, 믞늬 ë§ë€ìŽì§ 컎í¬ëížì íê³ìì ë²ìŽë ì§ì ìŒë¡ ë§ì¶€íëê³ , ëì ìŽë©°, ë°ìíìž ìží°íìŽì€ë¥Œ ë§ë€ ì ìë íì ì»ê² ë©ëë€.
íµì¬ì ë ìŽì ëšìŒ 조걎 ì€íìŒì êµíëì§ ìëë€ë ê²ì ëë€. ìŽì ììê° ì íí ìí© ì¡°í© íìì ìŽë»ê² 볎ìŽê³ ëìíŽìŒ íëì§ë¥Œ ì ìžì ìŒë¡ ì ìí ì ììµëë€. ë€í¬ 몚ëì ì ìíë ê°ëší ë²íŒìŽë , ë³µì¡í ìí ìžì íŒ ì»Ží¬ëížìŽë , ìììŽ ì€íí¹ì ë§í¬ì ì ížìíšì ë²ìŽëì§ ìê³ ë ì°ìíê³ íšìšì ìŒë¡ 구ì¶íë ë° íìí ë구륌 ì ê³µí©ëë€.